#include "stdafx.h"
#include "Headers.h"

#include "LocalDataFun.h"

MemoryPool ObjDataMemoryPool(sizeof(ObjData));
DYNCREATEI(ObjData);
ObjData::ObjData()
{
	id = 0;
	posX = 0;
	posY = 0;
	nextPosX = 0;
	nextPosY = 0;
	dirX = 1;
	dirY = 0;
	state = 0;
	prevState = 0;
	speed = 10;

}

void* ObjData::operator new(size_t size)
{
	return ObjDataMemoryPool.Alloc();
}

void ObjData::operator delete(void* pVoid)
{
	ObjDataMemoryPool.Free(pVoid);
}

node* ObjData::Clone()
{
	return new ObjData(*this);
}

void ObjData::Save(File& f)
{
	f.Write(id);
	f.Write(posX);
	f.Write(posY);
	f.Write(nextPosX);
	f.Write(nextPosY);
	f.Write(dirX);
	f.Write(dirY);
	f.Write(state);
	f.Write(prevState);
	f.Write(speed);

}

void ObjData::Load(File& f)
{
	f.Read(id);
	f.Read(posX);
	f.Read(posY);
	f.Read(nextPosX);
	f.Read(nextPosY);
	f.Read(dirX);
	f.Read(dirY);
	f.Read(state);
	f.Read(prevState);
	f.Read(speed);

}

ObjData* GetObjData(node* This)
{
	return (ObjData*)This->local;
}

MemoryPool DeltaDataMemoryPool(sizeof(DeltaData));
DYNCREATEI(DeltaData);
DeltaData::DeltaData()
{
	prevTime = time(NULL);

}

void* DeltaData::operator new(size_t size)
{
	return DeltaDataMemoryPool.Alloc();
}

void DeltaData::operator delete(void* pVoid)
{
	DeltaDataMemoryPool.Free(pVoid);
}

node* DeltaData::Clone()
{
	return new DeltaData(*this);
}

void DeltaData::Save(File& f)
{
	f.Write(prevTime);

}

void DeltaData::Load(File& f)
{
	f.Read(prevTime);

}

DeltaData* GetDeltaData(node* This)
{
	return (DeltaData*)This->local;
}

